gtk_entry_completion_get_cells: revert returning NULL
authorLars Uebernickel <lars@uebernic.de>
Sun, 3 Nov 2013 18:02:01 +0000 (19:02 +0100)
committerLars Uebernickel <lars@uebernic.de>
Sun, 3 Nov 2013 18:02:01 +0000 (19:02 +0100)
Too many applications and libraries depend on accessing the internally
created cell renderer. Allow that again, but print a warning.

gtk/gtkentrycompletion.c

index 37763f7649bef319ebda25af3cb613c2d01d671c..f0f16fc827b1417ece943348be9b0bee94e5f0cc 100644 (file)
@@ -844,20 +844,21 @@ gtk_entry_completion_clear_text_column_renderer (GtkEntryCompletion *completion)
 static GList *
 gtk_entry_completion_get_cells (GtkCellLayout *cell_layout)
 {
-  GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (cell_layout);
+  static gboolean warned = FALSE;
 
-  if (completion->priv->text_column == -1)
-    {
-      GtkCellArea *area;
+  GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (cell_layout);
+  GtkCellArea *area;
 
-      area = gtk_entry_completion_get_area (cell_layout);
-      return gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area));
-    }
-  else
+  if (!warned && completion->priv->text_column != -1)
     {
-      /* Don't expose the internally created cell renderer */
-      return NULL;
+      g_warning ("GtkEntryCompletion: don't call gtk_cell_layout_get_cells() to get "
+                 "the cell renderer that was created by setting 'text-column'.");
+      warned = TRUE;
     }
+
+  area = gtk_entry_completion_get_area (cell_layout);
+
+  return gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area));
 }
 
 static void
@@ -1475,6 +1476,9 @@ gtk_entry_completion_delete_action (GtkEntryCompletion *completion,
  * to have a list displaying all (and just) strings in the completion list,
  * and to get those strings from @column in the model of @completion.
  *
+ * The cell renderer added by this function is managed internally. Do
+ * not access or modify it.
+ *
  * Any cell renderers that were added to @completion before calling this
  * function will be removed.
  *